import { login, getUserInfo, getUserDetailById } from '@/api/user';
import { setToken, getToken, removeToken } from '@/utils/auth';
export default {
  namespaced: true,
  state: {
    token: getToken(), // token字段
    userInfo: {}, // 保存用户信息的
  },
  mutations: {
    // 设置token
    setToken(state, token) {
      state.token = token;
      setToken(token);
    },
    deleteToken(state) {
      state.token = '';
      removeToken();
    },
    // 修改保存用户信息
    setUserInfo(state, userInfo) {
      state.userInfo = userInfo;
    },
    // 清空用户信息
    clearUserInfo(state) {
      state.userInfo = {};
    },
  },
  actions: {
    // 这里是action的登录方法,context: 是一个和store具有相同的属性和方法的对象，这里的data 是参数
    async login(context, data) {
      // 调用登录模块的接口
      const res = await login(data);
      // 触发mutation的方法
      context.commit('setToken', res.data.data);
      return res;
    },
    async getUserInfo(context) {
      const res = await getUserInfo();
      const userInfo = await getUserDetailById(res.data.data.userId);
      const basicUserInfo = { ...res.data.data, ...userInfo.data.data };
      context.commit('setUserInfo', basicUserInfo);
      return basicUserInfo;
    },
    logout(context) {
      context.commit('deleteToken');
      context.commit('clearUserInfo');
    },
  },
};
